package com.petdog.module.tools.service;

import com.petdog.module.tools.dto.LostPetDTO;
import com.petdog.module.tools.dto.LostPetRequest;
import com.petdog.module.tools.dto.NearbyLostPetsRequest;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 寻宠启事服务接口
 */
public interface LostPetService {

    /**
     * 发布寻宠启事
     * @param request 寻宠启事信息
     * @param petPhoto 宠物照片
     * @param userId 用户ID
     * @return 寻宠启事ID
     */
    Long publishLostPet(LostPetRequest request, MultipartFile petPhoto, Long userId);

    /**
     * 获取附近的寻宠启事
     * @param request 附近寻宠请求参数
     * @return 寻宠启事列表
     */
    List<LostPetDTO> getNearbyLostPets(NearbyLostPetsRequest request);

    /**
     * 上传所见宠物照片并进行匹配
     * @param petPhoto 所见宠物照片
     * @param longitude 经度
     * @param latitude 纬度
     * @param userId 上传用户ID
     * @return 匹配结果信息
     */
    Map<String, Object> uploadSighting(MultipartFile petPhoto, Double longitude, Double latitude, Long userId);

    /**
     * 标记寻宠启事为已找回
     * @param lostPetId 寻宠启事ID
     * @param userId 用户ID
     */
    void markAsFound(Long lostPetId, Long userId);

    /**
     * 获取用户发布的寻宠启事
     * @param userId 用户ID
     * @return 寻宠启事列表
     */
    List<LostPetDTO> getUserLostPets(Long userId);
}